Repository navigation
Conversation
…ration <!-- wheels-bot:write-docs:2536 -->
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: This PR adds a well-written, factually accurate Debug Panel guide. The content and commit are clean, but there is one correctness issue that will silently break the sidebar layout: debug-panel.mdx claims order: 11, which is already held by route-model-binding.mdx. Starlight tie-breaks by filename (alphabetical), so the two pages will appear in undefined relative order — not the intended "between Packages and CORS" placement described in the PR body. A human maintainer should bump the conflicting pages before merging.
Correctness
Sidebar order collision — debug-panel.mdx line 6
sidebar:
order: 11 # CONFLICT: route-model-binding.mdx also uses order: 11The current digging-deeper sequence is:
| Page | order |
|---|---|
| packages | 10 |
| route-model-binding | 11 ← occupied |
| cors | 12 |
| rate-limiting | 13 |
| dependency-injection-usage | 14 |
The PR body says "sidebar order 11, between Packages and CORS", but that slot is taken. Starlight will tie-break alphabetically (debug-panel sorts before route-model-binding), so the two pages will render adjacently in an uncontrolled order, and the sidebar will not match the intent.
Fix: bump the four pages that follow Packages by one:
| File | Current order | New order |
|---|---|---|
debug-panel.mdx |
(new) | 11 |
route-model-binding.mdx |
11 | 12 |
cors.mdx |
12 | 13 |
rate-limiting.mdx |
13 | 14 |
dependency-injection-usage.mdx |
14 | 15 |
Docs
DB Adapter field conditionality — debug-panel.mdx Request tab table
The guide presents all Request tab fields in a flat table as though they always appear, but the source renders DB Adapter conditionally:
<cfif StructKeyExists(application.wheels, "adapterName")>
<dt>DB Adapter</dt>
...
</cfif>The guide already handles this for Route: "(omitted when no named route matched)". Add a similar parenthetical for DB Adapter — e.g. "(omitted when the adapter name is not detected)" — for consistency and to avoid surprising users who do not see this row.
Commits
Single commit docs(web/guides): add Debug Panel guide covering each tab and configuration — type, scope, and subject are all valid per commitlint.config.js. No issues.
Security
The Aside caution block accurately warns against enabling the debug bar in production and lists the specific state it exposes (data source name, environment, CFML engine version, parameter values). No concerns.
The prose quality, factual accuracy against vendor/wheels/events/onrequestend/debug.cfm, CHANGELOG entry, and index card are all solid. The sidebar order collision is the only blocker; the DB Adapter note is a minor nit.
Wheels Bot — Reviewer B (round 1)A's two findings are verified and accurate. However, A missed two factual errors in the doc that are more impactful than the DB Adapter nit A did flag, and the verdict state is mildly inconsistent with the language used. SycophancyNone detected. A used False positivesNone. Both findings are verified against source:
Missed issues1. Wrong setting name throughout — The doc invents a setting called <cfset set(enableDebug=true)>would silently do nothing — <cfset set(showDebugInformation=true)>A reviewed the prose and CHANGELOG carefully but did not cross-check the setting name against 2. Wrong default environments for The doc states the setting defaults to application.$wheels.showDebugInformation = true;
// ...
if (application.$wheels.environment != "development") {
application.$wheels.showDebugInformation = false;
}That condition covers 3. Wrong default for The table says application.$wheels.enablePublicComponent = false;
if (application.$wheels.environment == "development") {
application.$wheels.enablePublicComponent = true;
}The default is Verdict alignmentA describes the sidebar collision as "the only blocker" and asks that it be fixed "before merging," yet submitted as |
Address review feedback on PR #2539: - Replace `enableDebug` (which does not exist in the framework) with `showDebugInformation` throughout. The actual gate is checked in `vendor/wheels/events/EventMethods.cfc` and initialized in `vendor/wheels/events/init/debugging.cfm`. - Correct the default-environment claim: `showDebugInformation` is `true` only in `development`, not also in `testing` (per `debugging.cfm` lines 26-27, anything other than `development` flips it to false). - Correct `enablePublicComponent` default: it is `false`, only flipped to `true` in `development` (per `onapplicationstart.cfc` lines 241-243). - Add conditionality note to the Request tab's DB Adapter row, matching the existing treatment of the Route row (debug.cfm renders DB Adapter inside `StructKeyExists(application.wheels, "adapterName")`). - Bump sidebar `order` for `route-model-binding`, `cors`, `rate-limiting`, and `dependency-injection-usage` by 1 each so `debug-panel` (order 11) no longer collides with `route-model-binding`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: The follow-up commit (b3328d81b) correctly addresses all five issues raised in the previous Reviewer A pass — sidebar order collision resolved, enableDebug renamed to showDebugInformation, default-environment claim corrected, enablePublicComponent default corrected, and the DB Adapter conditionality note added. However, cross-checking the Tools tab URL table against vendor/wheels/public/routes.cfm and vendor/wheels/events/onrequestend/debug.cfm surfaces two factual URL inaccuracies that would send developers to 404s. A human reviewer should verify these before merging; verdict would be request changes if this were not a bot-authored PR.
Correctness
Tools tab — Tests card URL (debug-panel.mdx line 167)
| Tests | `/wheels/tests` — the test runner |The debug bar renders this link with urlFor(route = 'testbox') (debug.cfm:454). The testbox route is declared at vendor/wheels/public/routes.cfm:40:
.get(name = "testbox", pattern = "/wheels/app/tests", to = "wheels##public##testbox")The pattern is absolute and resolves to /wheels/app/tests, not /wheels/tests. A developer following the guide's URL would hit a 404.
Fix: Change the table row to:
| Tests | `/wheels/app/tests` — the test runner |Tools tab — API Docs card URL (debug-panel.mdx line 166)
| API Docs | `/wheels/api-docs` — generated API documentation |The debug bar renders this link with urlFor(route = 'wheelsApiDocs') (debug.cfm:446). The underlying route is declared inside the wheels namespace at vendor/wheels/public/routes.cfm:22:
.get(name = "apiDocs", pattern = "api", to = "public##api")The namespace prefix produces the namespaced route name wheelsApiDocs, and the resolved URL is /wheels/api — not /wheels/api-docs. A developer following the guide's URL would get a 404.
Fix: Change the table row to:
| API Docs | `/wheels/api` — generated API documentation |Resolved from previous review
All five issues flagged in the previous Reviewer A pass (SHA 6d31c0854) are confirmed resolved in this commit:
- Sidebar order collision:
debug-panelstays at 11;route-model-binding,cors,rate-limiting, anddependency-injection-usageeach bumped by 1. No remaining collisions in the 11–15 range (verified againstgrep -rn "order:" digging-deeper/). enableDebug→showDebugInformationthroughout (verified againstvendor/wheels/events/init/debugging.cfm:3).- Default-environment claim now reads "true only in
development, false elsewhere" (matchesdebugging.cfm:26-27). enablePublicComponentdefault corrected to "true indevelopment, false elsewhere" (matchesonapplicationstart.cfc:241-243).- DB Adapter conditionality note added to the Request tab table.
Commits
Both commits conform to commitlint.config.js:
docs(web/guides): add Debug Panel guide covering each tab and configuration— typedocs, scopeweb/guides(valid), subject clean.docs(web/guides): fix debug panel setting names and sidebar order— same; commit body clearly documents each correction with source-file citations.
Security
The production-safety <Aside type="caution"> block remains intact and accurate. No concerns.
|
Wheels Bot - Reviewer B (round 1) A's two URL findings are both verified correct against the source. No sycophancy, no false positives. I spot-checked the remaining factual claims in the doc (settings defaults, timing thresholds, and params exclusion list) and all are accurate. The only outstanding issues are A's two flagged URLs. Aligning on converged-changes. Sycophancy: None detected. A did not approve, flagged real issues, and cited source file + line for each. False positives: None. Both URL claims are accurate. Tests card: debug.cfm:454 calls urlFor(route='testbox'). The standalone route at vendor/wheels/public/routes.cfm:40 has name="testbox", pattern="/wheels/app/tests". The doc's /wheels/tests resolves to nothing. API Docs card: debug.cfm:446 calls urlFor(route='wheelsApiDocs'). Inside namespace(name="wheels"), name="apiDocs", pattern="api" (line 22) resolves to /wheels/api. The doc's /wheels/api-docs resolves to nothing. Missed issues: None detected. Spot-checks on claims A did not explicitly verify: enablePackagesComponent defaults to true confirmed at vendor/wheels/events/init/views.cfm:20. enablePluginsComponent and enableMigratorComponent default to true confirmed at vendor/wheels/events/onapplicationstart.cfc:239-240. showIncompatiblePlugins defaults to true confirmed at vendor/wheels/events/init/orm.cfm:41. Timing thresholds (green under 100ms, yellow 100-499ms, red 500ms or more) confirmed at debug.cfm:134. Params tab exclusion list (fieldnames, route, controller, action, key) confirmed at debug.cfm:62. Verdict alignment: A describes both issues as "would send developers to 404s" and explicitly states the verdict would be request-changes, but submitted as COMMENTED. The inconsistency is acknowledged in A's own review body; for a bot-authored PR this is a reasonable workflow choice since human approval is required regardless. Findings and verdict are otherwise consistent. Convergence: Aligned. A's two URL corrections are real and actionable, no findings are disputed, and no additional issues were found. Emitting converged-changes to trigger address-review. The two fixes are mechanical: /wheels/tests to /wheels/app/tests and /wheels/api-docs to /wheels/api in the Tools tab table of debug-panel.mdx. |
- Fix Tools tab API Docs URL: /wheels/api-docs -> /wheels/api (matches urlFor(route='wheelsApiDocs') resolving to namespaced /wheels/api per vendor/wheels/public/routes.cfm:22) - Fix Tools tab Tests URL: /wheels/tests -> /wheels/app/tests (matches urlFor(route='testbox') pattern at vendor/wheels/public/routes.cfm:40)
Wheels Bot — Address Review (round 1)Applied consensus findings from Reviewer A and Reviewer B's convergence (round 1):
No findings were skipped — Reviewer B verified A's two URL findings against source, found no false positives, no missed issues, and no disputed findings. The new commit will trigger a fresh Reviewer A run on the updated SHA. Convergence loop continues until reviewers align on |
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: This is the third Reviewer A pass on PR #2539 (head 0a796f78d). The latest commit correctly addresses both correctness issues raised in round 2 — the API Docs URL (/wheels/api-docs → /wheels/api) and the Tests URL (/wheels/tests → /wheels/app/tests) are now verified accurate against vendor/wheels/public/routes.cfm. The guide is factually clean. One minor documentation gap remains: the "Available from registry" sub-table inside the Packages section has a nested dependency on enablePublicComponent that the guide does not mention. Everything else is good. Verdict: comment (minor nit, no blocker).
Correctness
Round-2 fixes verified
Both URLs corrected in 0a796f78d are confirmed against vendor/wheels/public/routes.cfm:
wheelsApiDocs→ namespacewheels+name="apiDocs",pattern="api"→ resolves to/wheels/api✓ (routes.cfm:22)testbox→ the outer standalone declaration,pattern="/wheels/app/tests"→ resolves to/wheels/app/tests✓ (routes.cfm:40)
Minor: "Available from registry" has a hidden enablePublicComponent dependency
debug-panel.mdx describes the Packages section as:
Shown when `enablePackagesComponent` is `true` (the default in Wheels 4.0+). Displays two tables.The Installed packages table is gated solely on enablePackagesComponent, but the "Available from registry" sub-table has an additional guard in debug.cfm:341-368:
<cfif StructKeyExists(application.wheels, "public") AND IsObject(application.wheels.public)>
<cfset local.registryResult = application.wheels.public.$loadRegistryPackages()>
...Available from registry table...
</cfif>application.wheels.public is only populated when enablePublicComponent is true. A user who explicitly sets enablePublicComponent=false while keeping enablePackagesComponent=true will see the Installed table but not the Available table, with no explanation in the guide.
In practice this edge case is unlikely (both default to true in development, the environment where the debug bar is normally on), so this is not a blocker. A note next to the "Available from registry" heading would make the guide complete:
**Available from registry** (shown when `enablePublicComponent` is also `true`) pulls the same...Resolved from previous rounds
All issues from rounds 1 and 2 are confirmed resolved at this head SHA:
- Sidebar order collision:
debug-panel=11,route-model-binding=12,cors=13,rate-limiting=14,dependency-injection-usage=15— no collisions. showDebugInformationsetting name used throughout (notenableDebug).- Default-environment claim: "true only in
development, false elsewhere" — matchesdebugging.cfm:26-27. enablePublicComponentdefault: "true indevelopment, false elsewhere" — matchesonapplicationstart.cfc:241-243.- DB Adapter conditionality note present in the Request tab table.
Commits
All three commits conform to commitlint.config.js:
docs(web/guides): add Debug Panel guide covering each tab and configuration— typedocs, scopeweb/guides(valid), subject clean.docs(web/guides): fix debug panel setting names and sidebar order— same.docs(web/guides): address Reviewer A/B consensus findings (round 1)— same; commit body cites source-file line numbers for both URL fixes.
Security
The <Aside type="caution"> block warns against enabling the debug bar in production and correctly names the exposed state (data source name, environment, CFML engine version, parameter values). The Tools tab is correctly gated on enablePublicComponent. No concerns.
Wheels Bot — Reviewer B (round 1)A's review on the third Reviewer A pass is clean. The one finding — that the "Available from registry" sub-table has a hidden SycophancyNone detected. A used False positivesNone. A's claim is verified directly against source:
A user with Missed issuesNone detected. I re-checked:
Verdict alignmentA describes the finding as "not a blocker" and used ConvergenceAligned. A's one finding is real, the verdict ( |
Captured against a running Wheels 4.0.0-SNAPSHOT app (the blog sample)
via headless Chrome driven by CDP. All seven `{/* screenshot: ... */}`
placeholders in debug-panel.mdx are now replaced with `<img>` references
to PNGs under public/v4-0-0-snapshot/digging-deeper/debug-panel-screenshots/.
Shots:
- 01-collapsed-bar — bar pinned to bottom with all five tabs visible
- 02-request-panel — Posts.index with full key-value table
- 03-timing-panel — execution timing bars (action 9ms, view 3ms)
- 04-params-panel — table populated from a query string with four params
- 05-environment-panel — Application + Packages + Plugins sections
- 06-tools-panel — Developer Tools link grid
Total bundle ~1.0MB (six PNGs at 1280x800 @2x for retina). The
Environment-panel shot is referenced from both the Application and
Packages subsections since it shows both at once.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: Round 4 of PR #2539. The latest commit (fc5ad49fe) adds six real screenshots that fill the placeholder markers from earlier commits — the guide is now complete and renderable without placeholder gaps. Two minor nits remain: 05-environment-panel.png is reused verbatim for the Packages subsection with an alt text that misrepresents what the image shows, and the enablePublicComponent dependency for the "Available from registry" table (flagged in round 3) is still undocumented. Neither is a blocker. Verdict: comment.
Docs
Duplicate screenshot with misleading alt text — debug-panel.mdx line 138
05-environment-panel.png appears twice in the guide. The first use (line 114, Application subsection) has a comprehensive alt text describing the full environment panel:
Environment & Configuration panel showing Application section with Environment
(Development with green dot), Wheels Version, CFML Engine (Lucee 7.0.0.395),
Host Name; Packages section listing wheels-basecoat; and Plugins (Legacy)
"No plugins installed."
The second use (line 138, Packages subsection) claims to show something different:
Packages section of the Environment panel — Installed table showing
wheels-basecoat 3.0.0-rc.1 with version and description columns
Both image tags resolve to the same file. The second alt text implies a focused close-up of the Packages table, but the actual image is the same full-panel screenshot that already appeared above. Screen readers and search indexers see two contradictory descriptions of identical content. The PR body originally requested a separate screenshot (#6) for the Packages section showing the "Installed table on top … Available from registry table below"; that dedicated screenshot was not created.
The most straightforward fix is to update the line 138 alt text to accurately describe the actual image — the same full-panel view:
A separate dedicated Packages screenshot (06-packages-panel.png) would be better, but correcting the alt text is the minimum needed to avoid the inconsistency.
enablePublicComponent dependency still undocumented — debug-panel.mdx line 130 (carry-over from round 3)
The guide describes the "Available from registry" sub-table (line 130) as gated only on enablePackagesComponent. As established in the round-3 review, debug.cfm:341-368 wraps this sub-table in an additional guard:
<cfif StructKeyExists(application.wheels, "public") AND IsObject(application.wheels.public)>
<cfset local.registryResult = application.wheels.public.loadRegistryPackages()>
...Available from registry table...
</cfif>application.wheels.public is only set when enablePublicComponent is true. A developer who explicitly sets enablePublicComponent=false (e.g. on a staging server) will see the Installed table but not the Available table, with no explanation in the guide. The round-3 review suggested:
**Available from registry** (shown when `enablePublicComponent` is also `true`) pulls the same...Still a nit — both settings default to true in development, which is the only environment where the debug bar normally runs — but the guide would be more complete with this caveat.
Commits
All four commits in this PR conform to commitlint.config.js:
docs(web/guides): add Debug Panel guide covering each tab and configuration✓docs(web/guides): fix debug panel setting names and sidebar order✓docs(web/guides): address Reviewer A/B consensus findings (round 1)✓docs(web/guides): add debug panel screenshots from blog demo✓ (typedocs, scopeweb/guides, subject ≤ 100 chars, not ALL-CAPS)
Resolved from all previous rounds
Everything flagged in rounds 1–3 is confirmed resolved at this head SHA: sidebar order collision (11–15 range, no conflicts), showDebugInformation setting name, default-environment claims, DB Adapter conditionality note, API Docs URL (/wheels/api), Tests URL (/wheels/app/tests), and the production-safety Aside block.
Wheels Bot — Reviewer B (round 1)A's round 4 review is clean. Both findings are verified against source, no sycophancy, no false positives, no missed issues. Aligning on converged-approve. SycophancyNone detected. A used False positivesNone. Finding 1 — duplicate screenshot ( Finding 2 — Missed issuesNone detected. I spot-checked:
Verdict alignmentA's verdict of ConvergenceAligned. A's two findings are real and appropriately weighted. A's verdict is consistent with the findings. There are no disputed claims, no false positives to retract, and no missed blockers. The guide is factually correct and renderable at this SHA. The two nits are improvements a human reviewer may choose to require before merge, but they are not required for the guide to be useful and accurate. |
This PR adds a dedicated guide for the Wheels Debug Panel (
vendor/wheels/events/onrequestend/debug.cfm), which had no documentation in the user guides despite being one of the most-used development tools. The page covers every tab in the panel, the settings that control what appears, and when the bar is suppressed (AJAX, HTMX, Turbo, structured-output requests).Fixes #2536
Pages changed
web/sites/guides/src/content/docs/v4-0-0-snapshot/digging-deeper/debug-panel.mdx— new page (sidebar order 11, between Packages and CORS)web/sites/guides/src/content/docs/v4-0-0-snapshot/digging-deeper/index.mdx— added Debug Panel card to the section indexCHANGELOG.md— added[Unreleased] > ### DocumentationentryScreenshots needed
This docs PR includes
{/* screenshot: ... */}placeholder markers. A human reviewer should capture and replace each one with an actual image:debug-panel.mdxnear "The debug bar" section — the collapsed debug bar across the bottom of a browser window, showing all tabs and the git-branch + version on the rightdebug-panel.mdxnear "Request tab" section — Request panel open — the key-value table showing Route, Controller, Action, HTTP Method, URL, Application, Data Source, DB Adapter, URL Rewritingdebug-panel.mdxnear "Timing tab" section — Timing panel open — horizontal bar chart with phases color-coded and sorted by duration, total ms shown in the headerdebug-panel.mdxnear "Params tab" section — Params panel open — table with Name, Value, Type columns showing a mix of string and json-type parametersdebug-panel.mdxnear "Application" subsection — Environment panel open, Application section — environment dot, git branch, Wheels version, CFML engine, with environment-switch linksdebug-panel.mdxnear "Packages" subsection — Packages section — Installed table on top showing installed packages, Available from registry table below listing first-party packagesdebug-panel.mdxnear "Tools tab" section — Tools panel open — the link-card grid showing all available tool linksThe bot cannot run the app or capture images — these are intentional gaps for human follow-up.